import router from '@/router' // 导入路由实例
import store from '@/store' // 引入vuex store实例
import Nprogress from 'nprogress' // 第三方进度条插件
const whiteList = ['/login', '/404'] // 这里设置一个白色名单
    // 白色名单里放的是不受权限控制的页面

// 前置首位
// next()是前置守卫必须执行的钩子函数，next()必须执行，如果不执行，页面死掉
// next()放过
// next(false)跳转终止
// next('地址')跳转到某个地址
router.beforeEach((to, from, next) => {
    Nprogress.start() // 开启进度条

    // 判断是否有token
    if (store.getters.token) {
        // 有 token 且在登录界面
        if (to.path === '/login') {
            next('/') // 跳转到首页
        } else {
            // 有token但不在首页，直接放行
            // 这里就是免登录
            next()
        }
    } else {
        // 没有token
        // 判断是否在名单中
        if (whiteList.indexOf(to.path) > -1) {
            // 如果找到，表示在名单中，放行
            next()
        } else {
            // 否则，跳转到登录页面
            next('/login')
        }
    }
    // 手动强制关闭一次  为了解决 手动切换地址时  进度条的不关闭的问题
    Nprogress.done()
})

// 后置首位
router.afterEach(() => {
    Nprogress.done()
})
